$(function() {
    FormValidation.init();
});

var FormValidation = {
    /*
    ruleRegex : /^(.+)\[(.+)\]$/,
    numericRegex : /^[0-9]+$/,
    emailRegex : /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i,
    alphaRegex : /^[a-z]+$/i,
    alphaNumericRegex : /^[a-z0-9_-]+$/i,
    alphaNumericKoRegex : /^[ㄱ-힣a-z0-9_-]+$/i,
    alphaDashRegex : /^[a-z0-9_-]+$/i,
    naturalRegex : /^[0-9]+$/i,
    naturalNoZeroRegex : /^[1-9][0-9]*$/i,
    ipRegex : /^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$/i,
    base64Regex : /[^a-zA-Z0-9\/\+=]/i,
    */
    
    email : /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$/i,
    eng : /^[a-z]+$/i,
    eng_all : /^[a-zA-Z]+$/i,
    num : /^[0-9]+$/,
    eng_num : /^[a-z0-9_-]+$/i,
    eng_all_num : /^[a-zA-Z0-9_-]+$/i,
    ko : /^[ㄱ-힣]/,
    ko_eng_num : /^[ㄱ-힣a-z0-9_-]+$/i,
    ko_eng_all_num : /^[ㄱ-힣a-zA-Z0-9_-]+$/i,
    
    message : {
        email : '이메일 형식이 아닙니다.',
        eng : '영어(소문자)만 가능합니다.',
        eng_all : '영어(소문자, 대문자)만 가능합니다.',
        num : '숫자만 입력가능합니다.',
        eng_num : '영어(소문자), 숫자만 가능합니다.',
        eng_all_num : '영어(소문자, 대문자), 숫자만 가능합니다.',
        ko : '한글만 가능합니다.',
        ko_eng_num : '한글, 영어(소문자), 숫자만 가능합니다.',
        ko_eng_all_num : '한글, 영어(소문자, 대문자), 숫자만 가능합니다.'
    },

    init: function()
    {
        
    },
    
    /**
     * 
     * ex.
     * 
     * 이름, rule, 필드id, minLength, maxLength
     * var aValid = [
     *  ['닉네임', 'alpha', 'm_nick', 4, 10],
     *  ['아이디', 'alpha, 'm_id', 4, 20],
     *  ['비밀번호', alpha, 'm_pass', 6, 20]
     * ],
     */
    
    checked: function(aValid)
    {
        for (var i = 0, iLen = aValid.length; i < iLen; i++) {
            var _aValid = aValid[i];
            
            var _name = _aValid[0];
            var _rule = _aValid[1];
            var _fieldId = _aValid[2];
            var _minLength = _aValid[3];
            var _maxLength = _aValid[4];
            
            var _obj = document.getElementById(_fieldId);
            
            if (Base.trim(_obj.value) == '') {
                Base.messageIn('['+_name+'] 값을 입력해 주세요.', 'error');
                _obj.focus();
                return false;
            }
            
            if (_rule == 'empty') continue;

            // 유효성 검사
            //var _ret = eval('FormValidation.'+_rule+'(_obj)');
            var _ret = eval('FormValidation.'+_rule+'.test(\''+_obj.value+'\')');
            if (!_ret) {
                var _msg = eval('this.message.'+_rule);
                Base.messageIn(_msg, 'error');
                _obj.focus();
                return false;
            }
            
            var _iValueLen = _obj.value.length;
            
            // 최소 입력 값 확인
            if (_minLength != 0 && _minLength != undefined && _minLength != '') {
                if (_iValueLen < _minLength) {
                    Base.messageIn('최소 ['+_minLength+'자 이상] 입력하셔야 합니다.', 'error');
                    _obj.focus();
                    return  false;
                }
            }
            
            // 최대 입력 값 확인
            if (_maxLength != 0 && _maxLength != undefined && _maxLength != '') {
                if (_iValueLen > _maxLength) {
                    Base.messageIn('최대 ['+_maxLength+'자] 까지만 입력하셔야 합니다.', 'error');
                    _obj.focus();
                    return  false;
                }
            }
        }
        
        return true;
    }
};